package org.budo.mongo.filter;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Spliterator;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;

import org.bson.Document;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.conversions.Bson;

import com.mongodb.AggregationOptions;
import com.mongodb.AggregationOutput;
import com.mongodb.BulkWriteOperation;
import com.mongodb.CommandResult;
import com.mongodb.Cursor;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBDecoderFactory;
import com.mongodb.DBEncoder;
import com.mongodb.DBEncoderFactory;
import com.mongodb.DBObject;
import com.mongodb.GroupCommand;
import com.mongodb.InsertOptions;
import com.mongodb.MapReduceCommand;
import com.mongodb.MapReduceCommand.OutputType;
import com.mongodb.MapReduceOutput;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoNamespace;
import com.mongodb.MongoOptions;
import com.mongodb.ParallelScanOptions;
import com.mongodb.ReadConcern;
import com.mongodb.ReadPreference;
import com.mongodb.ReplicaSetStatus;
import com.mongodb.ServerAddress;
import com.mongodb.WriteConcern;
import com.mongodb.WriteResult;
import com.mongodb.bulk.BulkWriteResult;
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.DistinctIterable;
import com.mongodb.client.FindIterable;
import com.mongodb.client.ListCollectionsIterable;
import com.mongodb.client.ListDatabasesIterable;
import com.mongodb.client.ListIndexesIterable;
import com.mongodb.client.MapReduceIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.mongodb.client.model.BulkWriteOptions;
import com.mongodb.client.model.Collation;
import com.mongodb.client.model.CountOptions;
import com.mongodb.client.model.CreateCollectionOptions;
import com.mongodb.client.model.CreateViewOptions;
import com.mongodb.client.model.DBCollectionCountOptions;
import com.mongodb.client.model.DBCollectionDistinctOptions;
import com.mongodb.client.model.DBCollectionFindAndModifyOptions;
import com.mongodb.client.model.DBCollectionFindOptions;
import com.mongodb.client.model.DBCollectionRemoveOptions;
import com.mongodb.client.model.DBCollectionUpdateOptions;
import com.mongodb.client.model.DBCreateViewOptions;
import com.mongodb.client.model.DeleteOptions;
import com.mongodb.client.model.FindOneAndDeleteOptions;
import com.mongodb.client.model.FindOneAndReplaceOptions;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.IndexOptions;
import com.mongodb.client.model.InsertManyOptions;
import com.mongodb.client.model.InsertOneOptions;
import com.mongodb.client.model.RenameCollectionOptions;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;

@SuppressWarnings({ "rawtypes", "deprecation" })
public interface MongoFilter {
    void mongoClient_addOption(MongoFilterChain chain, MongoClient mongoClient, int $0);

    void mongoClient_close(MongoFilterChain chain, MongoClient mongoClient);

    void mongoClient_dropDatabase(MongoFilterChain chain, MongoClient mongoClient, String $0);

    CommandResult mongoClient_fsync(MongoFilterChain chain, MongoClient mongoClient, boolean $0);

    CommandResult mongoClient_fsyncAndLock(MongoFilterChain chain, MongoClient mongoClient);

    ServerAddress mongoClient_getAddress(MongoFilterChain chain, MongoClient mongoClient);

    List mongoClient_getAllAddress(MongoFilterChain chain, MongoClient mongoClient);

    String mongoClient_getConnectPoint(MongoFilterChain chain, MongoClient mongoClient);

    List mongoClient_getCredentialsList(MongoFilterChain chain, MongoClient mongoClient);

    DB mongoClient_getDB(MongoFilterChain chain, MongoClient mongoClient, String $0);

    MongoDatabase mongoClient_getDatabase(MongoFilterChain chain, MongoClient mongoClient, String $0);

    List mongoClient_getDatabaseNames(MongoFilterChain chain, MongoClient mongoClient);

    int mongoClient_getMaxBsonObjectSize(MongoFilterChain chain, MongoClient mongoClient);

    MongoClientOptions mongoClient_getMongoClientOptions(MongoFilterChain chain, MongoClient mongoClient);

    MongoOptions mongoClient_getMongoOptions(MongoFilterChain chain, MongoClient mongoClient);

    int mongoClient_getOptions(MongoFilterChain chain, MongoClient mongoClient);

    ReadConcern mongoClient_getReadConcern(MongoFilterChain chain, MongoClient mongoClient);

    ReadPreference mongoClient_getReadPreference(MongoFilterChain chain, MongoClient mongoClient);

    ReplicaSetStatus mongoClient_getReplicaSetStatus(MongoFilterChain chain, MongoClient mongoClient);

    List mongoClient_getServerAddressList(MongoFilterChain chain, MongoClient mongoClient);

    Collection mongoClient_getUsedDatabases(MongoFilterChain chain, MongoClient mongoClient);

    WriteConcern mongoClient_getWriteConcern(MongoFilterChain chain, MongoClient mongoClient);

    boolean mongoClient_isLocked(MongoFilterChain chain, MongoClient mongoClient);

    MongoIterable mongoClient_listDatabaseNames(MongoFilterChain chain, MongoClient mongoClient);

    ListDatabasesIterable mongoClient_listDatabases(MongoFilterChain chain, MongoClient mongoClient, Class $0);

    ListDatabasesIterable mongoClient_listDatabases(MongoFilterChain chain, MongoClient mongoClient);

    void mongoClient_resetOptions(MongoFilterChain chain, MongoClient mongoClient);

    void mongoClient_setOptions(MongoFilterChain chain, MongoClient mongoClient, int $0);

    void mongoClient_setReadPreference(MongoFilterChain chain, MongoClient mongoClient, ReadPreference $0);

    void mongoClient_setWriteConcern(MongoFilterChain chain, MongoClient mongoClient, WriteConcern $0);

    void mongoClient_slaveOk(MongoFilterChain chain, MongoClient mongoClient);

    String mongoClient_toString(MongoFilterChain chain, MongoClient mongoClient);

    DBObject mongoClient_unlock(MongoFilterChain chain, MongoClient mongoClient);

    void db_addOption(MongoFilterChain chain, DB db, int $0);

    WriteResult db_addUser(MongoFilterChain chain, DB db, String $0, char[] $1);

    WriteResult db_addUser(MongoFilterChain chain, DB db, String $0, char[] $1, boolean $2);

    boolean db_collectionExists(MongoFilterChain chain, DB db, String $0);

    CommandResult db_command(MongoFilterChain chain, DB db, DBObject $0);

    CommandResult db_command(MongoFilterChain chain, DB db, DBObject $0, DBEncoder $1);

    CommandResult db_command(MongoFilterChain chain, DB db, DBObject $0, ReadPreference $1);

    CommandResult db_command(MongoFilterChain chain, DB db, DBObject $0, ReadPreference $1, DBEncoder $2);

    CommandResult db_command(MongoFilterChain chain, DB db, String $0);

    CommandResult db_command(MongoFilterChain chain, DB db, String $0, ReadPreference $1);

    DBCollection db_createCollection(MongoFilterChain chain, DB db, String $0, DBObject $1);

    DBCollection db_createView(MongoFilterChain chain, DB db, String $0, String $1, List $2);

    DBCollection db_createView(MongoFilterChain chain, DB db, String $0, String $1, List $2, DBCreateViewOptions $3);

    CommandResult db_doEval(MongoFilterChain chain, DB db, String $0, Object[] $1);

    void db_dropDatabase(MongoFilterChain chain, DB db);

    Object db_eval(MongoFilterChain chain, DB db, String $0, Object[] $1);

    DBCollection db_getCollection(MongoFilterChain chain, DB db, String $0);

    DBCollection db_getCollectionFromString(MongoFilterChain chain, DB db, String $0);

    Set db_getCollectionNames(MongoFilterChain chain, DB db);

    Mongo db_getMongo(MongoFilterChain chain, DB db);

    String db_getName(MongoFilterChain chain, DB db);

    int db_getOptions(MongoFilterChain chain, DB db);

    ReadConcern db_getReadConcern(MongoFilterChain chain, DB db);

    ReadPreference db_getReadPreference(MongoFilterChain chain, DB db);

    DB db_getSisterDB(MongoFilterChain chain, DB db, String $0);

    CommandResult db_getStats(MongoFilterChain chain, DB db);

    WriteConcern db_getWriteConcern(MongoFilterChain chain, DB db);

    WriteResult db_removeUser(MongoFilterChain chain, DB db, String $0);

    void db_resetOptions(MongoFilterChain chain, DB db);

    void db_setOptions(MongoFilterChain chain, DB db, int $0);

    void db_setReadConcern(MongoFilterChain chain, DB db, ReadConcern $0);

    void db_setReadPreference(MongoFilterChain chain, DB db, ReadPreference $0);

    void db_setWriteConcern(MongoFilterChain chain, DB db, WriteConcern $0);

    void db_slaveOk(MongoFilterChain chain, DB db);

    String db_toString(MongoFilterChain chain, DB db);

    void dbCollection_addOption(MongoFilterChain chain, DBCollection dbCollection, int $0);

    AggregationOutput dbCollection_aggregate(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject[] $1);

    AggregationOutput dbCollection_aggregate(MongoFilterChain chain, DBCollection dbCollection, List $0);

    AggregationOutput dbCollection_aggregate(MongoFilterChain chain, DBCollection dbCollection, List $0, ReadPreference $1);

    Cursor dbCollection_aggregate(MongoFilterChain chain, DBCollection dbCollection, List $0, AggregationOptions $1);

    Cursor dbCollection_aggregate(MongoFilterChain chain, DBCollection dbCollection, List $0, AggregationOptions $1, ReadPreference $2);

    long dbCollection_count(MongoFilterChain chain, DBCollection dbCollection);

    long dbCollection_count(MongoFilterChain chain, DBCollection dbCollection, DBObject $0);

    long dbCollection_count(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, ReadPreference $1);

    long dbCollection_count(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBCollectionCountOptions $1);

    void dbCollection_createIndex(MongoFilterChain chain, DBCollection dbCollection, DBObject $0);

    void dbCollection_createIndex(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1);

    void dbCollection_createIndex(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, String $1);

    void dbCollection_createIndex(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, String $1, boolean $2);

    void dbCollection_createIndex(MongoFilterChain chain, DBCollection dbCollection, String $0);

    List dbCollection_distinct(MongoFilterChain chain, DBCollection dbCollection, String $0);

    List dbCollection_distinct(MongoFilterChain chain, DBCollection dbCollection, String $0, DBObject $1);

    List dbCollection_distinct(MongoFilterChain chain, DBCollection dbCollection, String $0, DBObject $1, ReadPreference $2);

    List dbCollection_distinct(MongoFilterChain chain, DBCollection dbCollection, String $0, ReadPreference $1);

    List dbCollection_distinct(MongoFilterChain chain, DBCollection dbCollection, String $0, DBCollectionDistinctOptions $1);

    void dbCollection_drop(MongoFilterChain chain, DBCollection dbCollection);

    void dbCollection_dropIndex(MongoFilterChain chain, DBCollection dbCollection, DBObject $0);

    void dbCollection_dropIndex(MongoFilterChain chain, DBCollection dbCollection, String $0);

    void dbCollection_dropIndexes(MongoFilterChain chain, DBCollection dbCollection);

    void dbCollection_dropIndexes(MongoFilterChain chain, DBCollection dbCollection, String $0);

    CommandResult dbCollection_explainAggregate(MongoFilterChain chain, DBCollection dbCollection, List $0, AggregationOptions $1);

    DBCursor dbCollection_find(MongoFilterChain chain, DBCollection dbCollection);

    DBCursor dbCollection_find(MongoFilterChain chain, DBCollection dbCollection, DBObject $0);

    DBCursor dbCollection_find(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1);

    DBCursor dbCollection_find(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, int $2, int $3);

    DBCursor dbCollection_find(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, int $2, int $3, int $4);

    DBCursor dbCollection_find(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBCollectionFindOptions $1);

    DBObject dbCollection_findAndModify(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1);

    DBObject dbCollection_findAndModify(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2);

    DBObject dbCollection_findAndModify(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6);

    DBObject dbCollection_findAndModify(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6, boolean $7, long $8, TimeUnit $9);

    DBObject dbCollection_findAndModify(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6, boolean $7, long $8, TimeUnit $9, WriteConcern $10);

    DBObject dbCollection_findAndModify(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6, WriteConcern $7);

    DBObject dbCollection_findAndModify(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6, long $7, TimeUnit $8);

    DBObject dbCollection_findAndModify(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, boolean $3, DBObject $4, boolean $5, boolean $6, long $7, TimeUnit $8, WriteConcern $9);

    DBObject dbCollection_findAndModify(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBCollectionFindAndModifyOptions $1);

    DBObject dbCollection_findAndRemove(MongoFilterChain chain, DBCollection dbCollection, DBObject $0);

    DBObject dbCollection_findOne(MongoFilterChain chain, DBCollection dbCollection);

    DBObject dbCollection_findOne(MongoFilterChain chain, DBCollection dbCollection, DBObject $0);

    DBObject dbCollection_findOne(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1);

    DBObject dbCollection_findOne(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2);

    DBObject dbCollection_findOne(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, ReadPreference $3);

    DBObject dbCollection_findOne(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, ReadPreference $2);

    DBObject dbCollection_findOne(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBCollectionFindOptions $1);

    DBObject dbCollection_findOne(MongoFilterChain chain, DBCollection dbCollection, Object $0);

    DBObject dbCollection_findOne(MongoFilterChain chain, DBCollection dbCollection, Object $0, DBObject $1);

    DBCollection dbCollection_getCollection(MongoFilterChain chain, DBCollection dbCollection, String $0);

    long dbCollection_getCount(MongoFilterChain chain, DBCollection dbCollection);

    long dbCollection_getCount(MongoFilterChain chain, DBCollection dbCollection, DBObject $0);

    long dbCollection_getCount(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1);

    long dbCollection_getCount(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, ReadPreference $2);

    long dbCollection_getCount(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, long $2, long $3);

    long dbCollection_getCount(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, long $2, long $3, ReadPreference $4);

    long dbCollection_getCount(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBCollectionCountOptions $1);

    long dbCollection_getCount(MongoFilterChain chain, DBCollection dbCollection, ReadPreference $0);

    DB dbCollection_getDB(MongoFilterChain chain, DBCollection dbCollection);

    DBDecoderFactory dbCollection_getDBDecoderFactory(MongoFilterChain chain, DBCollection dbCollection);

    DBEncoderFactory dbCollection_getDBEncoderFactory(MongoFilterChain chain, DBCollection dbCollection);

    String dbCollection_getFullName(MongoFilterChain chain, DBCollection dbCollection);

    List dbCollection_getHintFields(MongoFilterChain chain, DBCollection dbCollection);

    List dbCollection_getIndexInfo(MongoFilterChain chain, DBCollection dbCollection);

    String dbCollection_getName(MongoFilterChain chain, DBCollection dbCollection);

    Class dbCollection_getObjectClass(MongoFilterChain chain, DBCollection dbCollection);

    int dbCollection_getOptions(MongoFilterChain chain, DBCollection dbCollection);

    ReadConcern dbCollection_getReadConcern(MongoFilterChain chain, DBCollection dbCollection);

    ReadPreference dbCollection_getReadPreference(MongoFilterChain chain, DBCollection dbCollection);

    CommandResult dbCollection_getStats(MongoFilterChain chain, DBCollection dbCollection);

    WriteConcern dbCollection_getWriteConcern(MongoFilterChain chain, DBCollection dbCollection);

    DBObject dbCollection_group(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, String $3);

    DBObject dbCollection_group(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, String $3, String $4);

    DBObject dbCollection_group(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBObject $2, String $3, String $4, ReadPreference $5);

    DBObject dbCollection_group(MongoFilterChain chain, DBCollection dbCollection, GroupCommand $0);

    DBObject dbCollection_group(MongoFilterChain chain, DBCollection dbCollection, GroupCommand $0, ReadPreference $1);

    BulkWriteOperation dbCollection_initializeOrderedBulkOperation(MongoFilterChain chain, DBCollection dbCollection);

    BulkWriteOperation dbCollection_initializeUnorderedBulkOperation(MongoFilterChain chain, DBCollection dbCollection);

    WriteResult dbCollection_insert(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, WriteConcern $1);

    WriteResult dbCollection_insert(MongoFilterChain chain, DBCollection dbCollection, DBObject[] $0);

    WriteResult dbCollection_insert(MongoFilterChain chain, DBCollection dbCollection, DBObject[] $0, WriteConcern $1);

    WriteResult dbCollection_insert(MongoFilterChain chain, DBCollection dbCollection, DBObject[] $0, WriteConcern $1, DBEncoder $2);

    WriteResult dbCollection_insert(MongoFilterChain chain, DBCollection dbCollection, WriteConcern $0, DBObject[] $1);

    WriteResult dbCollection_insert(MongoFilterChain chain, DBCollection dbCollection, List $0);

    WriteResult dbCollection_insert(MongoFilterChain chain, DBCollection dbCollection, List $0, InsertOptions $1);

    WriteResult dbCollection_insert(MongoFilterChain chain, DBCollection dbCollection, List $0, WriteConcern $1);

    WriteResult dbCollection_insert(MongoFilterChain chain, DBCollection dbCollection, List $0, WriteConcern $1, DBEncoder $2);

    boolean dbCollection_isCapped(MongoFilterChain chain, DBCollection dbCollection);

    MapReduceOutput dbCollection_mapReduce(MongoFilterChain chain, DBCollection dbCollection, MapReduceCommand $0);

    MapReduceOutput dbCollection_mapReduce(MongoFilterChain chain, DBCollection dbCollection, String $0, String $1, String $2, DBObject $3);

    MapReduceOutput dbCollection_mapReduce(MongoFilterChain chain, DBCollection dbCollection, String $0, String $1, String $2, OutputType $3, DBObject $4);

    MapReduceOutput dbCollection_mapReduce(MongoFilterChain chain, DBCollection dbCollection, String $0, String $1, String $2, OutputType $3, DBObject $4, ReadPreference $5);

    List dbCollection_parallelScan(MongoFilterChain chain, DBCollection dbCollection, ParallelScanOptions $0);

    WriteResult dbCollection_remove(MongoFilterChain chain, DBCollection dbCollection, DBObject $0);

    WriteResult dbCollection_remove(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, WriteConcern $1);

    WriteResult dbCollection_remove(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, WriteConcern $1, DBEncoder $2);

    WriteResult dbCollection_remove(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBCollectionRemoveOptions $1);

    DBCollection dbCollection_rename(MongoFilterChain chain, DBCollection dbCollection, String $0);

    DBCollection dbCollection_rename(MongoFilterChain chain, DBCollection dbCollection, String $0, boolean $1);

    void dbCollection_resetOptions(MongoFilterChain chain, DBCollection dbCollection);

    WriteResult dbCollection_save(MongoFilterChain chain, DBCollection dbCollection, DBObject $0);

    WriteResult dbCollection_save(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, WriteConcern $1);

    void dbCollection_setDBDecoderFactory(MongoFilterChain chain, DBCollection dbCollection, DBDecoderFactory $0);

    void dbCollection_setDBEncoderFactory(MongoFilterChain chain, DBCollection dbCollection, DBEncoderFactory $0);

    void dbCollection_setHintFields(MongoFilterChain chain, DBCollection dbCollection, List $0);

    void dbCollection_setInternalClass(MongoFilterChain chain, DBCollection dbCollection, String $0, Class $1);

    void dbCollection_setObjectClass(MongoFilterChain chain, DBCollection dbCollection, Class $0);

    void dbCollection_setOptions(MongoFilterChain chain, DBCollection dbCollection, int $0);

    void dbCollection_setReadConcern(MongoFilterChain chain, DBCollection dbCollection, ReadConcern $0);

    void dbCollection_setReadPreference(MongoFilterChain chain, DBCollection dbCollection, ReadPreference $0);

    void dbCollection_setWriteConcern(MongoFilterChain chain, DBCollection dbCollection, WriteConcern $0);

    void dbCollection_slaveOk(MongoFilterChain chain, DBCollection dbCollection);

    String dbCollection_toString(MongoFilterChain chain, DBCollection dbCollection);

    WriteResult dbCollection_update(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1);

    WriteResult dbCollection_update(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, boolean $2, boolean $3);

    WriteResult dbCollection_update(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, boolean $2, boolean $3, WriteConcern $4);

    WriteResult dbCollection_update(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, boolean $2, boolean $3, WriteConcern $4, DBEncoder $5);

    WriteResult dbCollection_update(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, boolean $2, boolean $3, WriteConcern $4, Boolean $5, DBEncoder $6);

    WriteResult dbCollection_update(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1, DBCollectionUpdateOptions $2);

    WriteResult dbCollection_updateMulti(MongoFilterChain chain, DBCollection dbCollection, DBObject $0, DBObject $1);

    void mongoDatabase_createCollection(MongoFilterChain chain, MongoDatabase mongoDatabase, String $0);

    void mongoDatabase_createCollection(MongoFilterChain chain, MongoDatabase mongoDatabase, String $0, CreateCollectionOptions $1);

    void mongoDatabase_createView(MongoFilterChain chain, MongoDatabase mongoDatabase, String $0, String $1, List $2);

    void mongoDatabase_createView(MongoFilterChain chain, MongoDatabase mongoDatabase, String $0, String $1, List $2, CreateViewOptions $3);

    void mongoDatabase_drop(MongoFilterChain chain, MongoDatabase mongoDatabase);

    CodecRegistry mongoDatabase_getCodecRegistry(MongoFilterChain chain, MongoDatabase mongoDatabase);

    MongoCollection mongoDatabase_getCollection(MongoFilterChain chain, MongoDatabase mongoDatabase, String $0, Class $1);

    MongoCollection mongoDatabase_getCollection(MongoFilterChain chain, MongoDatabase mongoDatabase, String $0);

    String mongoDatabase_getName(MongoFilterChain chain, MongoDatabase mongoDatabase);

    ReadConcern mongoDatabase_getReadConcern(MongoFilterChain chain, MongoDatabase mongoDatabase);

    ReadPreference mongoDatabase_getReadPreference(MongoFilterChain chain, MongoDatabase mongoDatabase);

    WriteConcern mongoDatabase_getWriteConcern(MongoFilterChain chain, MongoDatabase mongoDatabase);

    MongoIterable mongoDatabase_listCollectionNames(MongoFilterChain chain, MongoDatabase mongoDatabase);

    ListCollectionsIterable mongoDatabase_listCollections(MongoFilterChain chain, MongoDatabase mongoDatabase, Class $0);

    ListCollectionsIterable mongoDatabase_listCollections(MongoFilterChain chain, MongoDatabase mongoDatabase);

    Object mongoDatabase_runCommand(MongoFilterChain chain, MongoDatabase mongoDatabase, Bson $0, ReadPreference $1, Class $2);

    Object mongoDatabase_runCommand(MongoFilterChain chain, MongoDatabase mongoDatabase, Bson $0, Class $1);

    Document mongoDatabase_runCommand(MongoFilterChain chain, MongoDatabase mongoDatabase, Bson $0);

    Document mongoDatabase_runCommand(MongoFilterChain chain, MongoDatabase mongoDatabase, Bson $0, ReadPreference $1);

    MongoDatabase mongoDatabase_withCodecRegistry(MongoFilterChain chain, MongoDatabase mongoDatabase, CodecRegistry $0);

    MongoDatabase mongoDatabase_withReadConcern(MongoFilterChain chain, MongoDatabase mongoDatabase, ReadConcern $0);

    MongoDatabase mongoDatabase_withReadPreference(MongoFilterChain chain, MongoDatabase mongoDatabase, ReadPreference $0);

    MongoDatabase mongoDatabase_withWriteConcern(MongoFilterChain chain, MongoDatabase mongoDatabase, WriteConcern $0);

    DBCursor dbCursor_addOption(MongoFilterChain chain, DBCursor dbCursor, int $0);

    DBCursor dbCursor_addSpecial(MongoFilterChain chain, DBCursor dbCursor, String $0, Object $1);

    DBCursor dbCursor_batchSize(MongoFilterChain chain, DBCursor dbCursor, int $0);

    void dbCursor_close(MongoFilterChain chain, DBCursor dbCursor);

    DBCursor dbCursor_comment(MongoFilterChain chain, DBCursor dbCursor, String $0);

    DBCursor dbCursor_copy(MongoFilterChain chain, DBCursor dbCursor);

    int dbCursor_count(MongoFilterChain chain, DBCursor dbCursor);

    DBObject dbCursor_curr(MongoFilterChain chain, DBCursor dbCursor);

    DBObject dbCursor_explain(MongoFilterChain chain, DBCursor dbCursor);

    void dbCursor_forEach(MongoFilterChain chain, DBCursor dbCursor, Consumer $0);

    void dbCursor_forEachRemaining(MongoFilterChain chain, DBCursor dbCursor, Consumer $0);

    int dbCursor_getBatchSize(MongoFilterChain chain, DBCursor dbCursor);

    Collation dbCursor_getCollation(MongoFilterChain chain, DBCursor dbCursor);

    DBCollection dbCursor_getCollection(MongoFilterChain chain, DBCursor dbCursor);

    long dbCursor_getCursorId(MongoFilterChain chain, DBCursor dbCursor);

    DBDecoderFactory dbCursor_getDecoderFactory(MongoFilterChain chain, DBCursor dbCursor);

    DBObject dbCursor_getKeysWanted(MongoFilterChain chain, DBCursor dbCursor);

    int dbCursor_getLimit(MongoFilterChain chain, DBCursor dbCursor);

    int dbCursor_getOptions(MongoFilterChain chain, DBCursor dbCursor);

    DBObject dbCursor_getQuery(MongoFilterChain chain, DBCursor dbCursor);

    ReadPreference dbCursor_getReadPreference(MongoFilterChain chain, DBCursor dbCursor);

    ServerAddress dbCursor_getServerAddress(MongoFilterChain chain, DBCursor dbCursor);

    boolean dbCursor_hasNext(MongoFilterChain chain, DBCursor dbCursor);

    DBCursor dbCursor_hint(MongoFilterChain chain, DBCursor dbCursor, DBObject $0);

    DBCursor dbCursor_hint(MongoFilterChain chain, DBCursor dbCursor, String $0);

    int dbCursor_itcount(MongoFilterChain chain, DBCursor dbCursor);

    Iterator dbCursor_iterator(MongoFilterChain chain, DBCursor dbCursor);

    int dbCursor_length(MongoFilterChain chain, DBCursor dbCursor);

    DBCursor dbCursor_limit(MongoFilterChain chain, DBCursor dbCursor, int $0);

    DBCursor dbCursor_max(MongoFilterChain chain, DBCursor dbCursor, DBObject $0);

    DBCursor dbCursor_maxScan(MongoFilterChain chain, DBCursor dbCursor, int $0);

    DBCursor dbCursor_maxTime(MongoFilterChain chain, DBCursor dbCursor, long $0, TimeUnit $1);

    DBCursor dbCursor_min(MongoFilterChain chain, DBCursor dbCursor, DBObject $0);

    DBObject dbCursor_next(MongoFilterChain chain, DBCursor dbCursor);

    int dbCursor_numSeen(MongoFilterChain chain, DBCursor dbCursor);

    DBObject dbCursor_one(MongoFilterChain chain, DBCursor dbCursor);

    void dbCursor_remove(MongoFilterChain chain, DBCursor dbCursor);

    DBCursor dbCursor_resetOptions(MongoFilterChain chain, DBCursor dbCursor);

    DBCursor dbCursor_returnKey(MongoFilterChain chain, DBCursor dbCursor);

    DBCursor dbCursor_setCollation(MongoFilterChain chain, DBCursor dbCursor, Collation $0);

    DBCursor dbCursor_setDecoderFactory(MongoFilterChain chain, DBCursor dbCursor, DBDecoderFactory $0);

    DBCursor dbCursor_setOptions(MongoFilterChain chain, DBCursor dbCursor, int $0);

    DBCursor dbCursor_setReadPreference(MongoFilterChain chain, DBCursor dbCursor, ReadPreference $0);

    DBCursor dbCursor_showDiskLoc(MongoFilterChain chain, DBCursor dbCursor);

    int dbCursor_size(MongoFilterChain chain, DBCursor dbCursor);

    DBCursor dbCursor_skip(MongoFilterChain chain, DBCursor dbCursor, int $0);

    DBCursor dbCursor_slaveOk(MongoFilterChain chain, DBCursor dbCursor);

    DBCursor dbCursor_snapshot(MongoFilterChain chain, DBCursor dbCursor);

    DBCursor dbCursor_sort(MongoFilterChain chain, DBCursor dbCursor, DBObject $0);

    Spliterator dbCursor_spliterator(MongoFilterChain chain, DBCursor dbCursor);

    List dbCursor_toArray(MongoFilterChain chain, DBCursor dbCursor);

    List dbCursor_toArray(MongoFilterChain chain, DBCursor dbCursor, int $0);

    String dbCursor_toString(MongoFilterChain chain, DBCursor dbCursor);

    DBObject dbCursor_tryNext(MongoFilterChain chain, DBCursor dbCursor);

    AggregateIterable mongoCollection_aggregate(MongoFilterChain chain, MongoCollection mongoCollection, List $0, Class $1);

    AggregateIterable mongoCollection_aggregate(MongoFilterChain chain, MongoCollection mongoCollection, List $0);

    BulkWriteResult mongoCollection_bulkWrite(MongoFilterChain chain, MongoCollection mongoCollection, List $0);

    BulkWriteResult mongoCollection_bulkWrite(MongoFilterChain chain, MongoCollection mongoCollection, List $0, BulkWriteOptions $1);

    long mongoCollection_count(MongoFilterChain chain, MongoCollection mongoCollection);

    long mongoCollection_count(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0);

    long mongoCollection_count(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, CountOptions $1);

    String mongoCollection_createIndex(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0);

    String mongoCollection_createIndex(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, IndexOptions $1);

    List mongoCollection_createIndexes(MongoFilterChain chain, MongoCollection mongoCollection, List $0);

    DeleteResult mongoCollection_deleteMany(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0);

    DeleteResult mongoCollection_deleteMany(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, DeleteOptions $1);

    DeleteResult mongoCollection_deleteOne(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0);

    DeleteResult mongoCollection_deleteOne(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, DeleteOptions $1);

    DistinctIterable mongoCollection_distinct(MongoFilterChain chain, MongoCollection mongoCollection, String $0, Class $1);

    DistinctIterable mongoCollection_distinct(MongoFilterChain chain, MongoCollection mongoCollection, String $0, Bson $1, Class $2);

    void mongoCollection_drop(MongoFilterChain chain, MongoCollection mongoCollection);

    void mongoCollection_dropIndex(MongoFilterChain chain, MongoCollection mongoCollection, String $0);

    void mongoCollection_dropIndex(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0);

    void mongoCollection_dropIndexes(MongoFilterChain chain, MongoCollection mongoCollection);

    FindIterable mongoCollection_find(MongoFilterChain chain, MongoCollection mongoCollection, Class $0);

    FindIterable mongoCollection_find(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Class $1);

    FindIterable mongoCollection_find(MongoFilterChain chain, MongoCollection mongoCollection);

    FindIterable mongoCollection_find(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0);

    Object mongoCollection_findOneAndDelete(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0);

    Object mongoCollection_findOneAndDelete(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, FindOneAndDeleteOptions $1);

    Object mongoCollection_findOneAndReplace(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Object $1);

    Object mongoCollection_findOneAndReplace(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Object $1, FindOneAndReplaceOptions $2);

    Object mongoCollection_findOneAndUpdate(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Bson $1);

    Object mongoCollection_findOneAndUpdate(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Bson $1, FindOneAndUpdateOptions $2);

    CodecRegistry mongoCollection_getCodecRegistry(MongoFilterChain chain, MongoCollection mongoCollection);

    Class mongoCollection_getDocumentClass(MongoFilterChain chain, MongoCollection mongoCollection);

    MongoNamespace mongoCollection_getNamespace(MongoFilterChain chain, MongoCollection mongoCollection);

    ReadConcern mongoCollection_getReadConcern(MongoFilterChain chain, MongoCollection mongoCollection);

    ReadPreference mongoCollection_getReadPreference(MongoFilterChain chain, MongoCollection mongoCollection);

    WriteConcern mongoCollection_getWriteConcern(MongoFilterChain chain, MongoCollection mongoCollection);

    void mongoCollection_insertMany(MongoFilterChain chain, MongoCollection mongoCollection, List $0);

    void mongoCollection_insertMany(MongoFilterChain chain, MongoCollection mongoCollection, List $0, InsertManyOptions $1);

    void mongoCollection_insertOne(MongoFilterChain chain, MongoCollection mongoCollection, Object $0);

    void mongoCollection_insertOne(MongoFilterChain chain, MongoCollection mongoCollection, Object $0, InsertOneOptions $1);

    ListIndexesIterable mongoCollection_listIndexes(MongoFilterChain chain, MongoCollection mongoCollection, Class $0);

    ListIndexesIterable mongoCollection_listIndexes(MongoFilterChain chain, MongoCollection mongoCollection);

    MapReduceIterable mongoCollection_mapReduce(MongoFilterChain chain, MongoCollection mongoCollection, String $0, String $1, Class $2);

    MapReduceIterable mongoCollection_mapReduce(MongoFilterChain chain, MongoCollection mongoCollection, String $0, String $1);

    void mongoCollection_renameCollection(MongoFilterChain chain, MongoCollection mongoCollection, MongoNamespace $0);

    void mongoCollection_renameCollection(MongoFilterChain chain, MongoCollection mongoCollection, MongoNamespace $0, RenameCollectionOptions $1);

    UpdateResult mongoCollection_replaceOne(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Object $1);

    UpdateResult mongoCollection_replaceOne(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Object $1, UpdateOptions $2);

    UpdateResult mongoCollection_updateMany(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Bson $1);

    UpdateResult mongoCollection_updateMany(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Bson $1, UpdateOptions $2);

    UpdateResult mongoCollection_updateOne(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Bson $1);

    UpdateResult mongoCollection_updateOne(MongoFilterChain chain, MongoCollection mongoCollection, Bson $0, Bson $1, UpdateOptions $2);

    MongoCollection mongoCollection_withCodecRegistry(MongoFilterChain chain, MongoCollection mongoCollection, CodecRegistry $0);

    MongoCollection mongoCollection_withDocumentClass(MongoFilterChain chain, MongoCollection mongoCollection, Class $0);

    MongoCollection mongoCollection_withReadConcern(MongoFilterChain chain, MongoCollection mongoCollection, ReadConcern $0);

    MongoCollection mongoCollection_withReadPreference(MongoFilterChain chain, MongoCollection mongoCollection, ReadPreference $0);

    MongoCollection mongoCollection_withWriteConcern(MongoFilterChain chain, MongoCollection mongoCollection, WriteConcern $0);

}